Various feature detection algorithms are used for image-based object recognition. At the most basic level, feature detection algorithms generate descriptors that provide a means to characterize, summarize and index distinguishing features of an image (e.g., shapes, objects, etc.) for purposes of image-based object recognition, search and retrieval. One example of a feature detection algorithm for image-based object recognition is the Scale Invariant Feature Transform (SIFT) feature detection algorithm, such as described in U.S. Pat. No. 6,711,293 to Lowe. For example, the SIFT feature detection algorithm may be applied to an image to generate descriptors for the numerous features within the image.
Machine-based object recognition generally comprises two distinct steps. First, training images of known objects are analyzed using a feature detection algorithm (e.g., a SIFT feature detection algorithm), which generates descriptors associated with features in the image data. Descriptors associated with many different objects can be packaged as a recognition library or database for deployment on a recognition device (e.g., a smartphone). Second, the recognition device captures a new “query” image of an object. The device applies the same image processing algorithm to the query image, thereby generating query image descriptors. The device then compares the query image descriptors to the training image descriptors in the recognition library. If there are sufficient matches, typically nearest neighbor matches, then the query image is considered to contain a representation of at least one of the known objects.
Unfortunately, a recognition library necessary for practical applications of image-based object recognition can be quite large with respect to typical mobile device (e.g., smartphone) storage capacities. This is especially true if the recognition library has to contain sufficient information to differentiate thousands of objects. For example, a typical SIFT descriptor may include 128 bytes of information. A data set of 1000 objects might then have 2,000,000 descriptors, which translates to a recognition library of 256 MB. Sufficiently large data sets are difficult to deploy on mobile devices, or even via a mobile communications network due to limited bandwidth and/or prohibitive data charges.